package com.digital.welcome.controller;


import com.digital.welcome.util.VerifyCodeUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @author 莲童的雨儿
 */
@RestController
public class VerifyCodeController {

    @ApiOperation("获取验证码图片")
    @RequestMapping(value = "/get-verify-code", method = RequestMethod.GET)
    public void getVerificationCode(HttpServletResponse response, HttpServletRequest request) throws IOException {
        int width = 200;
        int height = 69;

        BufferedImage verifyImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        //生成对应宽高的初始图片
        String randomText = VerifyCodeUtil.drawRandomText(width, height, verifyImg);
        //单独的一个类方法，出于代码复用考虑，进行了封装。
        //功能是生成验证码字符并加上噪点，干扰线，返回值为验证码字符
        request.getSession().setAttribute("verifyCode", randomText);
        response.setContentType("image/png");
        OutputStream os = response.getOutputStream();
        ImageIO.write(verifyImg, "png", os);//直接写出指定输出流
        os.flush();
        os.close();//关闭流

    }
}
